args = (1, 2, 3, 4)


def myfunc(a, b, c, d):
    print(a, b, c, d)


# TypeError: myfunc() missing 3 required positional arguments: 'b', 'c', and 'd'
# 函数缺少3个位置参数 b, d, d
# myfunc(args)  # 报错：函数缺少3个位置参数 b, d, d
# 因为需要4个参数，我们只传了1个参数

# 此时，可以通过*对参数args进行解包,如下
myfunc(*args)  # 1 2 3 4 在传递的时候会被解包为4个参数分别传递给形参 a b c d

# 两个星号对应关键字参数
kargs = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

# 此时如果只有一个*，则只会打印 a b c d
myfunc(*kargs)  # a b c d
print("=" * 10)

# 如果使用 ** 则会按照关键字参数的方式传,相当于：myfunc(a=1, b=2, c=3, d=4)
# ** 会将字典解包成关键字参数传入函数中
myfunc(**kargs)  # 1 2 3 4
